[% setvar title The Perl 6 Summary of the week ending 20031109 %]
<div id="archive-notice">
    <h3>This file is part of the Perl 6 Archive</h3>
    <p>To see what is currently happening visit <a href="http://www.perl6.org/">http://www.perl6.org/</a></p>
</div>
<div class='pod'>
<a name='The Perl 6 Summary of the week ending 20031109'></a><h1>The Perl 6 Summary of the week ending 20031109</h1>
<p>Traditionally this paragraph concerns itself with a few words on what
I've been up to before finally settling down to get the summary
written. But despite the fact that it's nearly four o'clock, it's been
one of those days where I seem to have done almost as much as Leon
Brocard generally does to warrant a mention each week.</p>
<p>So, here's what's been happening in perl6-internals to make up for the
lack of guff about breadmaking or whatever. (If you're interested, the
raisin borodinsky I mentioned last week was an unmitigated
disaster. The focaccia was fabulous though).</p>
<a name='New glossary entries'></a><h2>New glossary entries</h2>
<p>Gregor N. Purdy has added a few entries to the Parrot glossary, so if
you've been bursting to know what PIR, IMCC and other Parrot specific
clusters of capitals stand for, check out <b><i>docs/glossary.pod</i></b> in the
parrot distribution.</p>
<p><a href='http://groups.google.com/groups?threadm=1067835080.21332.28.camel@borg.focusresearch.com' target='_blank'>groups.google.com</a></p>
<a name='String Encodings hurt my head!'></a><h2>String Encodings hurt my head!</h2>
<p>Peter Gibbs is attempting to implement the DBCS encoding (whatever
that is) and has discovered that he can't implement <code>skip_backward</code>
for it because of the mixture of 1-byte and 2-byte characters. He
offered seven suggestions for the right thing to do at this impasse.</p>
<p>Michael Scott didn't have any suggestions about the Right Thing, but
he did point to a page on his very lovely Parrot Wiki which discussed
most things Unicode for parrot, and made a plea for Dan (or whoever)
to produce a Strings PDD.</p>
<p><a href='http://groups.google.com/groups?threadm=065301c3a1f3$be905240$c701010a@peter' target='_blank'>groups.google.com</a></p>
<p><a href='http://www.vendian.org/parrot/wiki/bin/view.cgi/Main/ParrotDistributionUnicodeSupport' target='_blank'>www.vendian.org</a> - Michael's WikiWord</p>
<a name='Perl 6 patches'></a><h2>Perl 6 patches</h2>
<p>Allison Randal posted a couple of patches to the current (very) mini
Perl 6 that comes with Parrot (in <b><i>languages/perl6</i></b>. A little later
in the week, Joseph F. Ryan contributed a Perl 6 patch. It's good to
see this receiving attention again.</p>
<p><a href='http://groups.google.com/groups?threadm=rt-24391-66978.5.70748361274084@rt.perl.org' target='_blank'>groups.google.com</a></p>
<a name='Documentation'></a><h2>Documentation</h2>
<p>Nick Kostirya wondered why <b><i>docs/parrot_assembly.pod</i></b> appeared to be
simply an old version of <b><i>docs/pdds/pdd06_pasm.pod</i></b>. He also worried
that <b><i>docs/ops/</i></b> appeared to be empty in the 0.0.13 release of
Parrot. Dan noted that both of the parrot assembly docs were wrong,
and that what would probably happen would be that the PDD would be
updated and <b><i>docs/parrot_assembly.pod</i></b> would be retired. J&uuml;rgen
B&ouml;mmels said that the empty <b><i>docs/ops</i></b> was because during the
Great Move, the Makefile that generated those POD files didn't get
updated to cope with the new location of the .ops files. Nick wondered
which other POD files might be going away so he'd not have to go
through the process of translating obsolete docs into Russian.</p>
<p><a href='http://groups.google.com/groups?threadm=003201c3a223$dc0becf0$2701010a@han.kherson.ua' target='_blank'>groups.google.com</a></p>
<p><a href='http://www.parrotcode.ks.ua/docs' target='_blank'>www.parrotcode.ks.ua</a> -- Why can't I type in Cyrillic?</p>
<a name='From the &quot;Interesting, but is it useful?&quot; department'></a><h2>From the &quot;Interesting, but is it useful?&quot; department</h2>
<p>Melvin Smith has been playing with an uncommitted version of <code>invoke</code>
which allows you to invoke a function by name not address. He outlined
the ideas behind it (and the workaround to make it play nice with the
GC system), but wondered if it was actually of any use. Dan and Leo
both agreed that it wasn't because of issues with threading and the
JIT.</p>
<p><a href='http://groups.google.com/groups?threadm=5.1.1.6.2.20031103121019.028a5488@pop.mindspring.com' target='_blank'>groups.google.com</a></p>
<a name='Freeze/thaw data format and PBC'></a><h2>Freeze/thaw data format and PBC</h2>
<p>Leo T&ouml;tsch is working on the data serialization/deserialization
(aka Freeze/Thaw) system discussed over the last few weeks. He
wondered if there were any plans for the frozen image data
format. Leo's plan is to use PBC constant format (with possible
extensions) so things integrate neatly into bytecode. Dan had a bunch
of comments, but the PBC based format idea seemed to be well received,
with the caveat that it should be a 'dense' format.</p>
<p><a href='http://groups.google.com/groups?threadm=3FA76052.5020700@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Opening files on other layers'></a><h2>Opening files on other layers</h2>
<p>J&uuml;rgen B&ouml;mmels asked for comments on a patch for opening
files on different layers which had a few issues that he felt needed
clarifying. He and Melvin Smith spent some time discussing things.</p>
<p>Apologies for not doing a better job in summarizing this thread, but
I'm hamstrung by not quite knowing what 'layer' means in this
context.</p>
<p><a href='http://groups.google.com/groups?threadm=m2r80o2p50.fsf@helium.physik.uni-kl.de' target='_blank'>groups.google.com</a></p>
<a name='Parrot Has PHP'></a><h2>Parrot Has PHP</h2>
<p>Okay, so the subject line's not quite true (yet), but who could resist
the recursive acronyminess of it? Anyhow:</p>
<p>Thies C. Arntzen and Sterling Hughes, core PHP hackers, popped up to
discuss the work they're doing on porting PHP to Parrot. Specifically,
they've hit a performance snag where PHP's typeless nature meant using
a PMC where they would rather be using a native type for speed. Thies
proposed a new datatype to get 'round the issue.</p>
<p>The general response was &quot;Hey! Fabulous! Someone's making a serious
effort to port a real language to Parrot! But that new type suggestion
is just reinventing the PMC. Oh, and if you could change your
generated code slightly you'd get much faster execution&quot;.</p>
<p>It's definitely fabulous though.</p>
<p><a href='http://groups.google.com/groups?threadm=20031105195432.GA32697@thieso.net' target='_blank'>groups.google.com</a></p>
<p><a href='http://www.edwardbear.org/pap.pdf' target='_blank'>www.edwardbear.org</a> -- Thies and Sterling's presentation</p>
<a name='newsub and implicit registers'></a><h2><code>newsub</code> and implicit registers</h2>
<p>Melvin Smith was concerned about the version of <code>newsub</code> that
implicitly sets P0 and P1, which can give IMCC's register tracking
code something of a headache. He proposed getting rid of the implicit
version and simply using IMCC to hide things. Leo agreed that the
implicit form of <code>newsub</code> wasn't really necessary, but pointed out
that there were plenty more ops out there that had implicit registers
that IMCC needed to track. Leo has a patch in his tree that deals with
the issue.</p>
<p><a href='http://groups.google.com/groups?threadm=5.1.1.6.2.20031106021636.01c43e80@pop.mindspring.com' target='_blank'>groups.google.com</a></p>
<a name='HASH changes'></a><h2>HASH changes</h2>
<p>J&uuml;rgen B&ouml;mmels wasn't entirely happy with some recent
changes to HASH in <b><i>src/hash.c</i></b> which make the hash tests fail. Nor
was he happy with the asymmetry of <code>hash_put</code> and <code>hash_get</code>, where
you <code>hash_put</code> a <code>void *value</code> but <code>hash_get</code> back a
<code>HASHBUCKET</code>. Leo apologised for breaking the tests, but defended the
asymmetry because it allows for distinguishing between a value of NULL
and a nonexistent key. J&uuml;rgen wasn't impressed, sometimes the
ambiguity is exactly what you want.</p>
<p>J&uuml;rgen ended up submitting a patch which implements a new,
extended hash querying API:</p>
<pre>  HashBucket *hash_get_bucket(...);
  void       *hash_get(...);
  INTVAL      hash_exists(...);</pre>
<p><a href='http://groups.google.com/groups?threadm=m2d6c5zo1q.fsf@helium.physik.uni-kl.de' target='_blank'>groups.google.com</a></p>
<a name='NCI broken on Win32'></a><h2>NCI broken on Win32</h2>
<p>NCI, the Native Call Interface, tries to help its users by adding the
appropriate 'loadable library' extension to any library it's asked to
load. This turns out to be the wrong thing to do when you're trying to
use the NCI from Win32, where there's more than one possible extension
for a loadable library (this turns out to be true for Mac OS X as
well). Jonathan Worthington let slip the fact that he was working on a
library to give Parrot access to the entire Win32 API, and that this
would involve loading a file with a <b><i>.drv</i></b> extension, which isn't
currently possible with Parrot on Win32.</p>
<p>The catch is that, in a lot of cases, you need to be able to leave the
extension unspecified because different Unix like OSes use the same
basic library name, but a different extension. (For instance, a Linux
box uses '.so', and OS X uses '.dynlib'). Leo proposed a workaround of
only adding the default extension if the file name didn't already
include a . in the filepart. Jonathan thought that sounded workable,
but suggested that simply trying to load the library with the name as
given, then trying with the default extension and only if that fails
throwing an exception, but Leo thought that that would slow down
opening libraries quite substantially.</p>
<p><a href='http://groups.google.com/groups?threadm=011f01c3a4c1$fd9b4280$aa866f83@jwcsjw' target='_blank'>groups.google.com</a></p>
<a name='Regular expressions'></a><h2>Regular expressions</h2>
<p>It's been a busy old week this week. First we hear of an effort to
port PHP to Parrot, and then St&eacute;phane Payrard announces that
he's started working on implementing Perl 6 Regular expressions. Which
is nice.</p>
<p><a href='http://groups.google.com/groups?threadm=20031105175019.GA3838@stefp.dyndns.org' target='_blank'>groups.google.com</a></p>
<a name='Meanwhile in perl6-language'></a><h1>Meanwhile in perl6-language</h1>
<a name='Nested modules'></a><h2>Nested modules</h2>
<p>Luke Palmer noted that, as with Perl 5, there was no need for modules
named Foo and Foo::Bar to be related. However, he wondered if it would
be possible to do</p>
<pre>   module Foo;
   module Bar {...}</pre>
<p>and refer to the inner module as, say, 'Foo.Bar'. He also wondered
about scary things like anonymous modules.</p>
<p>Larry came up with answers, essentially you could get the semantics
Luke was after but not necessarily with the same syntax.</p>
<p><a href='http://groups.google.com/groups?threadm=20031103025005.GA25752@babylonia.flatirons.org' target='_blank'>groups.google.com</a></p>
<a name='How to get environment variables'></a><h2>How to get environment variables</h2>
<p>Andrew Shitov wanted to know how to get at environment variables from
the Perl 6 mini language that comes with Parrot. Judging by the error
report that he pasted on his second post, it looks like that's not
supported in the current Perl 6 implementation.</p>
<p><a href='http://groups.google.com/groups?threadm=20031103083007.12455.qmail@onion.perl.org' target='_blank'>groups.google.com</a></p>
<a name='Announcements, Apologies, Acknowledgements'></a><h1>Announcements, Apologies, Acknowledgements</h1>
<p>As I said earlier, it's been a busy week. It's fabulous to see things
like the PHP porting effort and St&eacute;phane's work on Perl 6
regular expressions getting underway.</p>
<p>I'm afraid that anyone who thought I'd manage two Monday summaries in
a row has been sadly disappointed. Sorry.</p>
<p>Despite that, if you found this summary valuable, please consider the
following ways of showing your appreciation:</p>
<ul>
<li><a name='Take part. There's new, shiny projects to get involved with now, maybe you have exactly the knowledge and skills they need. dev.perl.org/perl6/ and www.parrotcode.org/ are good starting points. Hopefully once the PHP porting effort gets further down the road I'll be able to point you at a website for that too.'></a>Take part. There's new, shiny projects to get involved with now, maybe
you have exactly the knowledge and skills they
need. <a href='http://dev.perl.org/perl6/' target='_blank'>dev.perl.org</a> and <a href='http://www.parrotcode.org/' target='_blank'>www.parrotcode.org</a>
are good starting points. Hopefully once the PHP porting effort gets
further down the road I'll be able to point you at a website for that
too.</li>
<li><a name='Take out your wallet and donate some good hard cash to the Perl Foundation donate.perl-foundation.org/ to help support Larry, Dan and Damian.'></a>Take out your wallet and donate some good hard cash to the Perl
Foundation <a href='http://donate.perl-foundation.org/' target='_blank'>donate.perl-foundation.org</a> to help support
Larry, Dan and Damian.</li>
<li><a name='Take the time to drop me a line at p<a href='mailto:dcawley@bofh.org.uk'>dcawley@bofh.org.uk</a> letting me know what you think. I was enormously pleased last week to get some mail from someone at the Sanger Institute thanking me for the summaries. Personally, I reckon the Sanger Institute deserves far more thanks from all of us for keeping the genome free, but it's always nice to be appreciated.'></a>Take the time to drop me a line at <i><a href='http://search.cpan.org/perldoc?<a href='mailto:pdcawley@bofh.org.uk'>pdcawley@bofh.org.uk</a>'>p<a href='mailto:dcawley@bofh.org.uk'>dcawley@bofh.org.uk</a></a></i> letting me
know what you think. I was enormously pleased last week to get some
mail from someone at the Sanger Institute thanking me for the
summaries. Personally, I reckon the Sanger Institute deserves far more
thanks from all of us for keeping the genome free, but it's always
nice to be appreciated.</li>
</ul>
</div>
